package com.ruoyi.train.service;

import com.ruoyi.train.domain.Train;
import com.ruoyi.train.domain.TrainOwnTrainListVo;
import com.ruoyi.train.domain.TrainTotalExportVo;
import com.ruoyi.train.domain.TrainType;

import java.util.List;

/**
 * 培训Service接口
 *
 * @author zy
 * @date 2022-08-25
 */
public interface ITrainService {

    /**
     * 查询培训
     *
     * @param trainId 培训主键
     * @param userId  用户ID
     * @return 培训
     */
    public Train selectTrainByTrainId(String trainId, Long userId);

    /**
     * 查询培训列表
     *
     * @param train 培训
     * @return 培训集合
     */
    public List<Train> selectTrainList(Train train);

    /**
     * 新增培训
     *
     * @param train 培训
     * @return 结果
     */
    public int insertTrain(Train train);

    /**
     * 查询培训类型
     *
     * @return 培训类型集合
     */
    public List<TrainType> queryTrainTypes();

    /**
     * 批量删除培训
     *
     * @param trainIds 需要删除的培训主键集合
     * @param userId   用户id
     * @return int 结果
     */
    public int deleteTrainByTrainIds(String[] trainIds, Long userId);

    /**
     * 指定人员审批培训记录
     * @param train 培训集合
     *  @return int 结果
     */
    public int masterApproval(Train train);

    /**
     * 管理员查看个人培训记录
     * @param train 培训集合
     * @return 培训集合
     */
    public List<Train> selectTrainByGroup(Train train);

    /**
     * 查询user信息
     */
    public List<TrainOwnTrainListVo> selectOwnTrainList(Long userId);

    /**
     * 管理员导出所选培训记录统计
     */
    public List<TrainTotalExportVo>selectList(String[] ids);

    //管理员导出所有培训记录统计
    public List<TrainTotalExportVo> selectListAll();

    //部门筛选下拉菜单项
    public List<String>getDept();
}
